home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / vol_400 / 414_02 / nonport / resize.c < prev    next >
C/C++ Source or Header  |  1993-06-17  |  3KB  |  126 lines

  1. #define    CURSES_LIBRARY    1
  2. #include <curses.h>
  3. #undef    resize
  4.  
  5. #ifdef PDCDEBUG
  6. char *rcsid_resize = "$Header: C:\CURSES\nonport\RCS\resize.c 2.1 1993/06/18 20:22:14 MH Rel MH $";
  7. #endif
  8.  
  9.  
  10.  
  11.  
  12. /*man-start*********************************************************************
  13.  
  14.   resize()    - Resizes PDCurses; Changes video text size if necessary.
  15.  
  16.   PDCurses Description:
  17.      Does necessary initializations for the PDCurses package when
  18.      doing screen size changes. The user is responsible for
  19.      deleting and/or resizing windows after this call is made.
  20.  
  21.      See the call _resize_win().
  22.  
  23.      WARNING: This routine deallocated the existing stdscr, curscr
  24.      and modifies LINES, COLS and other internal PDCurses
  25.      variables.
  26.  
  27.   PDCurses Return Value:
  28.      The resize() function returns OK on success and ERR on error.
  29.  
  30.   PDCurses Errors:
  31.      It is an error to call this function before calling initscr().
  32.      Also, an error will be generated if we fail to create a newly
  33.      sized replacement window for curscr, or stdscr.
  34.      This will typically happen when increasing the window size.
  35.  
  36.      NOTE:  If this happens, the previously successfully allocated
  37.      windows are left alone.  i.e. The resize is NOT cancelled for
  38.      those windows.
  39.  
  40.   PDCurses BUGS:
  41.  
  42.      At this time, there is no support for any 40-column screen modes.
  43.  
  44.   Portability:
  45.      PDCurses    int    resize( int newlines );
  46.  
  47. **man-end**********************************************************************/
  48.  
  49. int    resize(int newlines)
  50. {
  51.     WINDOW*    tmp;
  52.  
  53. #ifdef PDCDEBUG
  54.     if (trace_on) PDC_debug("resize() - called: newlines %d\n",newlines);
  55. #endif
  56.  
  57.     if (stdscr == (WINDOW *)NULL)
  58.         return(ERR);
  59.  
  60. #ifdef    FLEXOS
  61.     /*
  62.      * Under FlexOS, this is functionally equivalent to a recallable
  63.      * initscr() because FlexOS does not yet support determination of
  64.      * screen fonts and therefore font loading and therefore text mode
  65.      * screen resolution changes...
  66.      */
  67.     return( ERR );
  68. #endif
  69.  
  70. #if defined(DOS)
  71.     switch (_cursvar.adapter)
  72.     {
  73.     case _EGACOLOR:
  74.         if (newlines >= 43)        PDC_set_font(_FONT8);
  75.         else                PDC_set_80x25();
  76.         break;
  77.  
  78.     case _VGACOLOR:
  79.         if    (newlines > 28)        PDC_set_font(_FONT8);
  80.         else    if (newlines > 25)    PDC_set_font(_FONT14);
  81.         else                PDC_set_80x25();
  82.         break;
  83.  
  84.     default:
  85.         break;
  86.     }
  87. #endif
  88.  
  89. #ifdef     OS2
  90.     if (newlines >= 43)        PDC_set_font(_FONT8);
  91.     else    if (newlines > 25)    PDC_set_font(_FONT14);
  92.     else                PDC_set_80x25();
  93. #endif
  94.  
  95.     _cursvar.lines = LINES = PDC_get_rows();
  96.     _cursvar.cols  = COLS  = PDC_get_columns();
  97.  
  98.     if (curscr->_pmaxy > LINES)
  99.     {
  100.         PDC_scroll(0, 0, curscr->_pmaxy - 1, COLS - 1, 0, _cursvar.orig_attr);
  101.     }
  102.     else
  103.     {
  104.         PDC_scroll(0, 0, LINES - 1, COLS - 1, 0, _cursvar.orig_attr);
  105.     }
  106.     if ((tmp = resize_win(curscr, LINES, COLS)) != (WINDOW *) NULL)
  107.     {
  108.         curscr = tmp;
  109.     }
  110.     else
  111.     {
  112.         return (ERR);
  113.     }
  114.     if ((tmp = resize_win(stdscr, LINES, COLS)) != (WINDOW *) NULL)
  115.     {
  116.         stdscr = tmp;
  117.         touchwin(stdscr);
  118.         wnoutrefresh(stdscr);
  119.     }
  120.     else
  121.     {
  122.         return (ERR);
  123.     }
  124.     return (OK);
  125. }
  126.